package com.briup.day06;

import java.util.Arrays;
import java.util.Random;

/**
 * 分发饼干
 */
public class DivideTheCookies {
    public static void main(String[] args) {
        // 存在一个孩子胃口数组g[i]，存在一个饼干尺寸数组s[j]
        // 当s[j]>=g[i]时，表示该饼干满足孩子胃口，求被满足的最大孩子数量
        // 初始化孩子胃口数组
        int[] g = initArr(5, 6);
        System.out.println(Arrays.toString(g));
        int[] s = initArr(6, 5);
        System.out.println(Arrays.toString(s));

        // 给数组进行排序，使用Arrays.sort()方法
        Arrays.sort(g);
        Arrays.sort(s);

        // 确定饼干满足情况，使用了贪心算法
        int total = 0;
        for (int i = 0, j = 0; i < g.length & j < s.length; ) {
            if (s[j] >= g[i]) {
                // 如果饼干满足当前孩子的胃口，直接将本饼干分配给当前孩子
                i++;
                // 记录一下满足孩子的个数
                total++;
            }
            // 如果不满足，那么后续孩子的胃口也不满足，所以直接放弃当前饼干的分配
            j++;
        }
        System.out.println("满足胃口的孩子个数为：" + total);
    }

    /**
     * 初始化一个指定长度的整型数组，内部的数据元素使用随机数生成
     *
     * @param length 数组长度
     * @param bounds 随机数的上限
     * @return 数组对象
     */
    private static int[] initArr(int length, int bounds) {
        int[] arr = new int[length];
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            arr[i] = random.nextInt(bounds) + 1;
        }
        return arr;
    }
}
